package com.cuanbo.dualscreenteachzhu.utils;

import android.content.Context;
import android.content.Intent;

import com.cuanbo.dualscreenteachzhu.base.App;
import com.cuanbo.dualscreenteachzhu.bean.AtyInfo;
import com.google.gson.Gson;

/**
 * 打开Activity的工具类
 */
public class ActivityUtil {

    /**
     * 跳转到新的Activity
     *
     * @param atyCls 要打开的Activity
     * @param key    键
     * @param value  字符串值
     */
    public static void open(Context context, Class atyCls, String key, String value) {
        Intent intent = new Intent(context, atyCls);
        intent.putExtra(key, value);
        context.startActivity(intent);
    }

    /**
     * 跳转到新的Activity
     *
     * @param atyCls 要打开的Activity
     * @param key    键
     * @param value  boolean值
     */
    public static void open(Context context, Class atyCls, String key, boolean value) {
        Intent intent = new Intent(context, atyCls);
        intent.putExtra(key, value);
        context.startActivity(intent);
    }

    /**
     * 跳转到新的Activity
     *
     * @param atyCls 要打开的Activity
     * @param key    键
     * @param value  int值
     */
    public static void open(Context context, Class atyCls, String key, int value) {
        Intent intent = new Intent(context, atyCls);
        intent.putExtra(key, value);
        context.startActivity(intent);
    }

    /**
     * 跳转到新的Activity
     *
     * @param atyCls 要打开的Activity
     * @param key    键
     * @param value  double值
     */
    public static void open(Context context, Class atyCls, String key, double value) {
        Intent intent = new Intent(context, atyCls);
        intent.putExtra(key, value);
        context.startActivity(intent);
    }

    /**
     * 跳转到新的Activity
     *
     * @param atyCls 要打开的Activity
     * @param key    键
     * @param value  float值
     */
    public static void open(Context context, Class atyCls, String key, float value) {
        Intent intent = new Intent(context, atyCls);
        intent.putExtra(key, value);
        context.startActivity(intent);
    }

    /**
     * 跳转到新的Activity
     *
     * @param atyCls 要打开的Activity
     */
    public static void open(Context context, Class atyCls) {
        Intent intent = new Intent(context, atyCls);
        context.startActivity(intent);
    }

    /**
     * 跳转到新的Activity
     *
     * @param atyCls 在新任务栈中打开Activity
     */
    public static void openNewAty(Context context, Class atyCls) {
        Intent intent = new Intent(context, atyCls);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }

    /**
     * 跳转到新的Activity
     *
     * @param atyCls 要打开的Activity
     * @param value  要传过去的实体对象
     */
    public static void open(Context context, Class atyCls, Object value) {
        open(context, atyCls, value.getClass().getSimpleName(), value);
    }

    /**
     * 跳转到新的Activity
     *
     * @param atyCls 要打开的Activity
     * @param key    键
     * @param value  要传过去的实体对象
     */
    public static void open(Context context, Class atyCls, String key, Object value) {
        String jsonObject = new Gson().toJson(value);
        open(context, atyCls, key, jsonObject);
    }

    /**
     * 关闭指定的Activity
     *
     * @param atyCls 要关闭的Activity
     */
    public static void close(Class atyCls) {
        try {
            AtyInfo atyInfo = App.getActivity(atyCls);
            if (atyInfo != null && atyInfo.getAty() != null) {
                atyInfo.getAty().finish();
            }
            App.removeAty(atyInfo);
        } catch (Exception e) {
        }
    }
}
